/*************************************************************************************
*                                  SRL ENGINE                                        *
*                                                                                    *
*                                                                                    *
*  File : SRL_GraphScene.h                                                           *
*  Author: SRL Killing                                                               *
*  Date: 25/02/10 20:30                                                              *
*  Description:                                                                      *
*                                                                                    *  
*  Licence :  LGPL                                                                   *
*                                                                                    *
*    Copyright (C) 2010 Pecatte Baptiste                                             *
*                                                                                    *
*    This program is free software; you can redistribute it and/or                   *
*    modify it under the terms of the GNU Lesser General Public                      *
*    License as published by the Free Software Foundation; either                    *
*    version 2.1 of the License, or (at your option) any later version.              *
*                                                                                    *
*    This program is distributed in the hope that it will be useful,                 *
*    but WITHOUT ANY WARRANTY; without even the implied warranty of                  *
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU                *
*    Lesser General Public License for more details.                                 *
*                                                                                    *
*    You should have received a copy of the GNU Lesser General Public                *
*    License along with this program; if not, write to the Free Software             *
*    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA    *
*                                                                                    *
**************************************************************************************/

/*******************/
/*** Includes ******/

// Standards
#include <cmath>
#include <map>
#include <string> 
#include <fstream>
#include <GL/gl.h>
#include <GL/glu.h>

// Utilities
#include <SRL/Utils/Vector.h>
#include <SRL/Utils/Matrix.h>
#include <SRL/Utils/Color.h>
#include <SRL/Utils/BoundingBox.h>
#include <SRL/Utils/Log.h>
#include <SRL/Utils/Extensions.h>
#include <SRL/Utils/Core.h>

// Engines
#include <SRL/Engine/FrameBuffer.h>
#include <SRL/Engine/Texture.h>
#include <SRL/Engine/Shader.h>
#include <SRL/Engine/Program.h>
#include <SRL/Engine/Camera.h>
#include <SRL/Engine/Frustum.h>
#include <SRL/Engine/SkyBox.h>
#include <SRL/Engine/Terrain.h>
#include <SRL/Engine/ScreenMap.h>

#ifndef DefineHeaderGraphScene
#define DefineHeaderGraphScene

namespace srl {
    class GraphScene {
        public:
            GraphScene(int w, int h, int fovy=70, double nearD=0.1, double farD=1000);
            void Draw();
            void Init();
            //srl::Object* AddObject(std::string id, std::string url);
            srl::Camera* AddCamera(std::string id, bool current=true, float p_visionField=1000, float p_walkSpeed=0.1, float p_runSpeed=0.2, int p_turnSpeed=1000);
            
        private:
            //std::map<std::string, srl::Object> objects;
            //srl::Objects::Terrain Terrain;
            std::map<std::string, srl::Camera> cameras;
            srl::Camera* currentCamera;
            srl::Frustum frustumCulling;
    };
};

#endif
